package com.shujia;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;

public class Demo3 {
    public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
        /**
         * 泛型，编译时对类型的限制
         *
         * 泛型类
         * 泛型方法
         *
         * 运行时不起作用，反射在运行时
         *
         *
         *
         */

        ArrayList<String> list = new ArrayList<String>();

        list.add("java");
        //list.add(10)


        // 可以通过反射绕过泛型对类型的限制
        Class<ArrayList> listClass = ArrayList.class;

        //获取add方法
        Method add = listClass.getMethod("add", Object.class);

        //执行方法
        add.invoke(list, 10);


        System.out.println(list);

        print("a");
        print(10);


    }


    //泛型方法
    //extends Object 限制类型范围
    public static <T extends Object> void print(T x) {
        System.out.println(x);
    }
}
